使用消息

消息系统提供一种通知事件和交换信息的方法。

消息和参数

MessageArguments 是在消息中传递的参数的基类。Kanzi 为不同的节点和触发器提供内置消息类型。例如,ButtonConcept::ClickedMessageArguments 消息用于按钮: 点击 (Button:Click) 触发器, Page::ActivatedMessageArguments 消息用于页面已激活 (Page Activated) 触发器。

您可以写入自己的消息类型来扩展MessageArguments 类。

消息类型描述:

您可以使用 PropertyType 对象来描述和访问消息参数。 MessageArguments::setArgument 函数集和 MessageArguments::getArgument 函数通过参数底层存储类型检索参数,如 float、Boolean、Vector3 等。

分派消息

要将消息分派给处理程序,使用 Node::dispatchMessage。该函数定义消息类型和参数,并调用为该消息类型的节点注册的所有处理程序。

Node::dispatchMessage 在函数调用返回之前立即通知处理程序,使处理程序能够立即对消息作出反应。

接收消息

Kanzi 中的所有消息都是路由消息。当派发消息时,系统在隧道进程中从根节点经过达到消息目标,然后在冒泡进程中返回。在场景图中每个通过的节点处,系统寻找已派发消息的处理程序。这样您可以将处理程序安装在有效拦截消息的图形中任何位置,然后才能达到目的或从多个来源收集消息。

在冒泡阶段处理消息,在隧道阶段拦截或过滤消息。

接收程序作为函数实现,并作为指针传递到 Node::addMessageHandler()kzuMessageDispatcherAddTunnellingHandler()。要为接收程序的实现提供环境,注册时向用户数据提供指针。使用 Node::removeMessageHandler() 移除处理程序。

计时器

消息系统带有内置计时器消息支持,可使用 KzuMessageDispatcher 访问。kzuMessageDispatcherAddTimerHandler() 订阅计时器,而 kzuMessageDispatcherRemoveTimerHandler() 取消订阅计时器。订阅期间,设置计时器间隔和计时器行为:

Kanzi Studio 中创建自定义消息

要在 Kanzi Studio 中创建自定义消息:

  1. 素材库 (Library) 中,按下 Alt 并右键点击属性类型 (Property Types) 并选择 属性类型 (Property Type)

    属性类型编辑器 (Property Type Editor) 即会打开。
  2. 属性类型编辑器 (Property Type Editor) 中设置:
    • 命名 (Naming) 类别中设置:
      • 名称 (Name),以设置您在Kanzi API 中使用的属性的名称。
        属性类型名称不能含有:
        • 属性名称开头或结尾不能使用句点 (.)
        • 空格
        • 制表符
        • 斜线 (/)
        • 反斜杠 (\)
        • 井号 (#)
        • 左右大括号 ({})
        • @ 符号
      • 显示名称 (Display Name),以设置您在 Kanzi Studio 中使用的属性的名称。输入<Name> 以使用与您在名称 (Name) 属性中设置的名称相同的名称。
      • 类别 (Category),以设置 Kanzi Studio属性 (Properties)添加属性 (Add Properties) 窗口中的哪个类别显示属性类型。
        使用 类别 (Category) 属性可在 Kanzi Studio 中快速找到属性类型。

    • 使用数据类型 (Data Type) 属性设置其保存的数据类型。 要创建消息,将 数据类型 (Data Type) 设置为 消息 (Message)
    • 特定类型 (Type Specific) 部分设置:
      • 消息接受的 参数 (Arguments)
      • 消息使用的 路由模式 (Routing Mode)
  3. 点击保存 (Save)
    您现在可以在应用程序中使用自定义消息。

请参阅设置触发器消息的处理

另请参阅

使用输入操纵器

触发器

使用触发器